home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games 1996 July / Amiga Games 1996 #7.iso / rexx / packtool.dopus5 < prev    next >
Text File  |  1996-02-23  |  36KB  |  901 lines

  1. /*
  2. Universal - Packertool
  3. $VER: Packtool.Dopus5 1.0 (31.1.96) © by P.Kromarek sen.
  4. ----------------------------------------------------------------------------------
  5. Aufruf als:
  6. Knopf:
  7. ARexx DOpus5:ARexx/Packtool.DOPus5 {Qp} [Pack|UnPack|Convert] [NOASK|ASK]
  8. evtl.Packervorgabe [LZX|LHA|XPK|LHAMASH|LZXMASH|XMASH|DMS|DSQ] z.B.XPK-NUKE.100
  9. Sonst nichts.(Wahlweise Ausgabe im Fenster).
  10. ----------------------------------------------------------------------------------
  11. Dateitype --- Doppelklick:
  12. ARexx DOpus5:ARexx/Packtool.DOPus5 {Qp} Show....{f}
  13. Show(DSQ|PKA|PKX) benötigt auch keinerlei Ausgabeoption, die anderen
  14. Showversionen benötigen Ausgabe im Fenster, ohne Schließsymbol.
  15. Bei allen ShowXXX muß als als letztes Argument {f} mit angegeben werden!
  16. Die ID der Dateitypen muß das Suffix beinhalten! z.B.[LHA|XPK|LZX|AMPK u.s.w.]
  17. Die Priorität der LZX|LHA-Masher muß höher sein als die der normalen Packer!!
  18. ----------------------------------------------------------------------------------
  19. TRACE (ALL)*/
  20. OPTIONS RESULTS
  21. OPTIONS FAILAT 99
  22. SIGNAL ON SYNTAX;SIGNAL ON BREAK_C
  23. PARSE ARG portname auftrag message crunch
  24. ADDRESS VALUE portname
  25. auftrag = UPPER(STRIP(auftrag,B,' "'))
  26. loesch = 0
  27. lwf = 0
  28. a = 1
  29. frage = 0
  30. nachricht = 0
  31. fresh = 0
  32. lf = '0a'x
  33. tr = D2C(34)
  34. packer = 0
  35. warn = 0
  36. abbruch = 0
  37. laufwerk = ""
  38.  
  39. lister query source
  40. fenster_s = RESULT
  41. lister query dest
  42. fenster_d = RESULT
  43. IF fenster_s = "RESULT" & LEFT(auftrag,4) ~= "SHOW" THEN DO
  44.    dopus request '"Es ist kein Quellister aktiviert!!'||lf||'Bitte aktivieren, und dann nochmal." Ok'
  45.    EXIT
  46. END
  47. IF fenster_d = fenster_s & LEFT(auftrag,4) ~= "SHOW"THEN DO
  48.    dopus request '"Es ist kein Ziellister aktiviert!!'||lf||'Bitte aktivieren, und dann nochmal." Ok'
  49.    EXIT
  50. END
  51. lister query fenster_s numselentries
  52. anzahl = RESULT
  53. lister query fenster_s path
  54. pfad_s = RESULT
  55. lister query fenster_d path
  56. pfad_d = RESULT
  57.  
  58. IF LEFT(auftrag,4) ~= "SHOW" THEN DO
  59.    ADDRESS COMMAND 'assign >NIL: Tooltemp: exists'
  60.    ass = RC
  61.    IF ass ~= 0 THEN DO
  62.       ADDRESS COMMAND 'makedir >NIL: Ram:Packtemp'
  63.       ADDRESS COMMAND 'assign >NIL: Packtemp: Ram:Packtemp'
  64.    END
  65.    IF ass = 0 THEN DO
  66.       ADDRESS COMMAND 'makedir >NIL: Tooltemp:Packtemp'
  67.       ADDRESS COMMAND 'assign >NIL: Packtemp: Tooltemp:Packtemp'
  68.    END
  69.    ADDRESS COMMAND 'assign >NIL: quelle: 'tr||pfad_s||tr
  70.    ADDRESS COMMAND 'assign >NIL: ziel: 'tr||pfad_d||tr
  71. END
  72.  
  73. SELECT
  74.       WHEN auftrag = "UNPACK" THEN CALL ENTPACKEN
  75.       WHEN auftrag = "CONVERT" THEN CALL WANDELN
  76.       WHEN auftrag = "PACK" THEN CALL PACKEN
  77.       OTHERWISE CALL zeige
  78. END
  79.  
  80. SCHLUSS:
  81. IF fresh = 0 THEN DO
  82.    lister set fenster_d busy 0
  83.    lister clear fenster_d abort 0
  84.    lister read fenster_d tr||pfad_d||tr force
  85.    lister refresh fenster_d full
  86. END
  87. lister set fenster_s busy 0
  88. lister clear fenster_s abort 0
  89. lister read fenster_s tr||pfad_s||tr force
  90. lister refresh fenster_s full
  91. ADDRESS COMMAND 'assign >NIL: Packtemp: remove'
  92. IF ass ~= 0 THEN ADDRESS COMMAND 'delete >NIL: Ram:Packtemp ALL OUIET FORCE'
  93. IF ass = 0 THEN ADDRESS COMMAND 'delete >NIL: Tooltemp:Packtemp ALL OUIET FORCE'
  94. ADDRESS COMMAND 'assign >NIL: quelle: remove'
  95. ADDRESS COMMAND 'assign >NIL: ziel: remove'
  96. OPTIONS CACHE
  97. ADDRESS
  98. EXIT
  99.  
  100. ZEIGE:
  101. fresh = 1
  102. file = STRIP(message,B,' "')
  103. IF crunch ~= "" & crunch ~= "CRUNCH" THEN file = tr||file||crunch
  104. IF auftrag = "SHOWDMS" THEN DO
  105.    ADDRESS COMMAND 'DMS VIEW '||file
  106. END
  107. IF auftrag = "SHOWDSQ" THEN DO
  108.    ADDRESS COMMAND 'LZX -m -X0 -bo930 -q x '||file||' Files.dsq Ram:'
  109.       IF EXISTS('Ram:Files.dsq') = 1 THEN DO
  110.          'command AnsiRead Ram:Files.dsq'
  111.          ADDRESS COMMAND 'wait 1'
  112.       END
  113.    ADDRESS COMMAND 'Delete >NIL: Ram:Files.dsq QUIET FORCE'
  114. END
  115. IF auftrag = "SHOWPKX" | auftrag = "SHOWPKA" THEN DO
  116.    IF auftrag = "SHOWPKX" THEN ADDRESS COMMAND 'LZX -m -X0 -bo256 -q x '||file||' Files.pak Ram:'
  117.    IF auftrag = "SHOWPKA" THEN ADDRESS COMMAND 'LHA -F -m -b256 -X -q x '||file||' Files.pak Ram:'
  118.       IF EXISTS('Ram:Files.pak') = 1 THEN DO
  119.          'command AnsiRead Ram:Files.pak'
  120.          ADDRESS COMMAND 'wait 2'
  121.       END
  122.    ADDRESS COMMAND 'Delete >NIL: Ram:Files.pak QUIET FORCE'
  123. END
  124. IF auftrag = "SHOWPKD" THEN DO
  125.    ADDRESS COMMAND 'PackDev VIEWFILE '||file
  126. END
  127. RETURN
  128.  
  129. WANDELN:
  130. pause = 0
  131. arc = 0
  132. fragpack = 0
  133. zzs = ""
  134. lister set fenster_s busy 1
  135. lister set fenster_d busy 1
  136. anweisung = UPPER(STRIP(message,B,' "'))
  137. IF anweisung = "NOASK" THEN loesch = 1
  138. IF crunch ~= "" & crunch ~= "CRUNCH" THEN DO
  139.    crunch = UPPER(STRIP(crunch,B,' "'))
  140.    packer = LEFT(crunch,3)
  141.    IF LENGTH(Crunch) >3 THEN subpack = SUBSTR(crunch,5)
  142.    fragpack = 1
  143.    SELECT
  144.       WHEN packer = "LZX" THEN packer = 1
  145.       WHEN packer = "LHA" THEN packer = 2
  146.       WHEN packer = "XPK" THEN packer = 3
  147.       WHEN packer = "DMS" THEN packer = 4
  148.       WHEN packer = "ZOOM" THEN packer = 5
  149.       OTHERWISE NOP
  150.    END
  151. END
  152. IF anzahl < 1 THEN DO
  153.    dopus request '"Oh Mann!: Irgendetwas solltest du schon anhaken!" OK'
  154.    CALL schluss
  155. END
  156. a=0
  157. zzx = " D B"
  158. DO FOREVER
  159.    a = a+1
  160.    lister query fenster_s firstsel
  161.    IF RC ~= 0 THEN LEAVE
  162.    xfile = RESULT
  163.    unpackfile = STRIP(xfile,B,' "')
  164.    lister select fenster_s xfile 0
  165.    dopus getfiletype 'quelle:'||xfile id
  166.    packtyp = RESULT
  167.    IF fragpack = 0 THEN DO
  168.       dopus request '"Auf welches Packerformat soll konvertiert werden?" LZX|LHA|XPK|DMS|Zoom|DSQ|ENDE'
  169.       packer = RC;fragpack = 1
  170.    END
  171.    IF packer = 0 THEN CALL schluss
  172.    SELECT
  173.       WHEN packer = 1 THEN hpck = "LZX"
  174.       WHEN packer = 2 THEN hpck = "LHA"
  175.       WHEN packer = 3 THEN hpck = "XPK"
  176.       WHEN packer = 4 THEN hpck = "DMS"
  177.       WHEN packer = 5 THEN hpck = "ZOM"
  178.       WHEN packer = 6 THEN hpck = "DSQ"
  179.    END
  180.    IF packtyp = "XMS" THEN DO
  181.       IF LEFT(drive,2) ~= "DF" THEN CALL drivetest
  182.    END
  183.    IF packtyp = "DMS" | packtyp = "XMS" | packtyp = "PKD" | packtyp = "ZOM" Then DO
  184.       IF frage = 0 THEN CALL DRIVETEST
  185.    END
  186.    IF hpck = packtyp THEN DO
  187.       dopus request '"Das File '||xfile||lf||'kannst DU besser kopieren!!" Ok'
  188.       pause = 1
  189.    END
  190.    IF pause = 0 THEN DO
  191.       CALL sense
  192.       IF a = 1 THEN lister set fenster_s progress anzahl 'Konvertiere Archiv(e):'
  193.       IF packtyp = "DMS" THEN DO
  194.          say
  195.          say "DMS ist bei der Arbeit!"
  196.          say
  197.       END
  198.       lister set fenster_s progress count a
  199.       IF packtyp ~= "ICON" THEN lister set fenster_s progress name 'Unpack: '||unpackfile
  200.       SELECT
  201.           WHEN packtyp = "DMS" THEN ADDRESS COMMAND 'DMS WRITE '||tr||'quelle:'||unpackfile||tr||' TO '||tr||drive||tr||' NOTEXT NOPAUSE <NIL: >NIL:'
  202.           WHEN packtyp = "XMS" THEN ADDRESS COMMAND 'XMash WRITE '||tr||'quelle:'||unpackfile||tr||' TO '||tr||drive||tr
  203.           WHEN packtyp = "PKD" THEN ADDRESS COMMAND 'PackDev '||tr||'quelle:'||unpackfile||tr||' '||tr||drive||tr||' ETDF NC NV'
  204.           WHEN packtyp = "ZOM" THEN ADDRESS COMMAND 'zoom From '||tr||'quelle:'||unpackfile||tr||' To '||tr||drive||tr||' N'
  205.           WHEN packtyp = "PKA" | packtyp = "PKX" | packtyp = "DSQ" | packtyp = "XDM" THEN NOP
  206.           OTHERWISE arc = 1
  207.       END
  208.       IF arc = 1 THEN DO
  209.          CALL sense
  210.          SELECT
  211.             WHEN packtyp = "LZX" THEN ADDRESS COMMAND 'LZX -m -3 -bo256 -X0 x '||tr||'quelle:'||unpackfile||tr||' Packtemp:'
  212.             WHEN packtyp = "LHA" THEN ADDRESS COMMAND 'LHA -m -b256 x '||tr||'quelle:'||unpackfile||tr||' Packtemp:'
  213.             WHEN packtyp = "AMPK" THEN ADDRESS COMMAND 'AMIPACK-X '||tr||'quelle:'||unpackfile||tr||' Packtemp:'
  214.             WHEN packtyp = "ZIP" THEN ADDRESS COMMAND 'Unzip -o '||tr||'quelle:'||unpackfile||tr||' -d Packtemp:'
  215.             OTHERWISE arc = 2
  216.          END
  217.       END
  218.       IF RC >5 THEN CALL fehler
  219.       IF pause = 1 THEN BREAK
  220.       signal = 0
  221.       IF packtyp = "PKA" | packtyp = "PKX" | packtyp = "DSQ" | packtyp = "XDM" THEN DO
  222.          IF packer <3 | packer = 6 THEN signal = 1
  223.       END
  224.       IF arc = 0 & pause = 0 THEN DO
  225.          IF packtyp = "PKX" | packtyp = "DSQ" | packtyp = "PKA" | packtyp = "XDM" THEN DO
  226.             lister set fenster_s progress name 'Ich Entpacke:'||unpackfile
  227.             IF packtyp = "PKX" | packtyp = "DSQ"| packtyp = "XDM" THEN ADDRESS COMMAND 'LZX -m -X0 x '||tr||'quelle:'||unpackfile||tr||' Packtemp:'
  228.             IF packtyp = "PKA" THEN ADDRESS COMMAND 'LHA -F -m -X x '||tr||'quelle:'||unpackfile||tr||' Packtemp:'
  229.             IF RC >5 THEN CALL fehler
  230.             IF pause = 1 THEN BREAK
  231.             IF packer <= 2 | packer = 6 THEN arc = 2
  232.             CALL sense
  233.             IF packtyp = "DSQ" THEN DO
  234.                ADDRESS COMMAND 'rename >NIL: packtemp:Image.dsq to packtemp:Image.pak'
  235.                ADDRESS COMMAND 'rename >NIL: packtemp:Files.dsq to packtemp:Files.pak'
  236.             END
  237.             IF EXISTS('Packtemp:xdm.pkd') = 1 THEN ADDRESS COMMAND 'rename >NIL: packtemp:xdm.pkd to packtemp:Image.pak'
  238.             IF EXISTS('Packtemp:xdm.dsk') = 1 THEN ADDRESS COMMAND 'rename >NIL: packtemp:xdm.dsk to packtemp:Image.pak'
  239.             IF EXISTS('Packtemp:xdm.image') = 1 THEN ADDRESS COMMAND 'rename >NIL: packtemp:xdm.image to packtemp:Image.pak'
  240.             IF packer = 6 THEN DO
  241.                ADDRESS COMMAND 'rename >NIL: packtemp:Image.pak to packtemp:Image.dsq'
  242.                ADDRESS COMMAND 'rename >NIL: packtemp:Files.pak to packtemp:Files.dsq'
  243.             END
  244.             IF packer >2 & packer ~= 6 THEN DO
  245.                IF frage = 0 THEN CALL drivetest
  246.                lister set fenster_s progress name 'Ich Convertiere!'
  247.                dopus getfiletype 'Packtemp:Image.pak id'
  248.                testpack = RESULT
  249.                IF testpack = "PKD" THEN DO
  250.                   ADDRESS COMMAND 'wait 1'
  251.                   ADDRESS COMMAND 'PackDev packtemp:Image.pak '||tr||drive||tr||' ETDF NC NV'
  252.                   IF RC >5 THEN CALL fehler
  253.                END
  254.                IF testpack ~= "PKD" THEN DO
  255.                   ADDRESS COMMAND 'wait 1'
  256.                   ADDRESS COMMAND 'DD -c1760 -w '||tr||drive||tr||' Packtemp:Image.pak'
  257.                   IF RC >5 THEN CALL fehler
  258.                END
  259.             END
  260.             IF packer >2 & packer ~= 6 THEN ADDRESS COMMAND 'delete >NIL: packtemp:#? ALL'
  261.             IF pause = 1 THEN BREAK
  262.          END
  263.          CALL sense
  264.          IF signal = 0 THEN DO
  265.             lister set fenster_s progress name 'Teste: '||drive
  266.             zusatz = ""
  267.             ADDRESS COMMAND 'TestDevice '||tr||drive||tr
  268.             xt = RC
  269.             IF xt = 0 THEN DO
  270.                ADDRESS COMMAND 'DirII >Ram:Testfile '||tr||drive||tr||' ALL NOINFO LFORMAT %l'
  271.                OPEN('test','Ram:Testfile','READ')
  272.                tx = READLN('test')
  273.                CLOSE('test')
  274.                ADDRESS COMMAND 'delete >NIL: Ram:Testfile QUIET FORCE'
  275.                IF VALUE('tx') <1 THEN xt = 1
  276.             END
  277.             IF xt = 0 & packer ~= 3 THEN ADDRESS COMMAND 'DirII >Packtemp:Files.pak all sizes width=64 '||tr||drive||tr
  278.             IF xt ~= 0 THEN DO
  279.                zusatz = " ALL";zzs = " NOZERO";zzx = ""
  280.                ADDRESS COMMAND 'echo >Packtemp:Files.pak "Diskette leer oder keine gültige DOS-Disk!!"'
  281.             END
  282.             IF packer = 6 THEN ADDRESS COMMAND 'rename >NIL: Packtemp:Files.pak to Packtemp:Files.dsq'
  283.          END
  284.          IF pause = 0 & packer < 3 | packer = 6 THEN DO
  285.             IF arc = 0 THEN DO
  286.                lister set fenster_s progress name 'Ich Convertiere!'
  287.                ADDRESS COMMAND 'wait 1'
  288.                ADDRESS COMMAND 'PackDev '||tr||drive||tr||' Packtemp:Image.pak '||zusatz||' NC NV'
  289.                IF RC >5 THEN CALL fehler
  290.                IF EXISTS('Packtemp:Image.pak.PKD') = 0 THEN DO
  291.                   dopus request '"Achtung!! Fehler beim (Ent)Packen!!!" Nächstes|Abbruch'
  292.                   abbruch = RC
  293.                   IF abbruch = 0 THEN CALL schluss
  294.                   pause = 1
  295.                END
  296.             END
  297.             IF pause = 0 THEN DO
  298.                IF arc = 0 & packer ~= 6 THEN ADDRESS COMMAND 'Rename Packtemp:Image.pak.PKD to Packtemp:Image.pak'
  299.                IF arc = 0 & packer = 6 THEN ADDRESS COMMAND 'Rename Packtemp:Image.pak.PKD to Packtemp:Image.dsq'
  300.                IF packer = 1 THEN imagefile = LEFT(unpackfile,LASTPOS('.',unpackfile))||"pkx"
  301.                IF packer = 2 THEN imagefile = LEFT(unpackfile,LASTPOS('.',unpackfile))||"pka"
  302.                IF packer = 6 THEN imagefile = LEFT(unpackfile,LASTPOS('.',unpackfile))||"dsq"
  303.                IF EXISTS('ziel:'||imagefile) = 1 THEN DO
  304.                   IF loesch = 0 THEN DO
  305.                      dopus request '"Es existiert bereits ein File mit dem gleichen Namen!!'||lf||'Das muß gelöscht werden!!" Ja|Nein'
  306.                      IF RC = 1 THEN loesch = 2
  307.                   END
  308.                IF loesch > 0 THEN ADDRESS COMMAND 'delete >NIL: '||tr||'ziel:'||imagefile||tr||' QUIET FORCE'
  309.                IF loesch = 2 THEN loesch = 0
  310.                END
  311.                CALL sense
  312.                lister set fenster_s progress name 'Packe: '||imagefile
  313.                IF packer = 1 | packer = 6 THEN ADDRESS COMMAND 'LZX -m -3 -bo256 -X0 -Y a '||tr||'ziel:'||imagefile||tr||' Packtemp:(Image|Files)#?'
  314.                IF packer = 2 THEN ADDRESS COMMAND 'LHA -m -X -b256 -Z a '||tr||'ziel:'||imagefile||tr||' Packtemp:(Image|Files)#?'
  315.                IF RC >5 THEN CALL fehler
  316.                ADDRESS COMMAND 'DELETE >NIL: Packtemp:#? QUIET FORCE'
  317.                CALL sense
  318.             END
  319.          END
  320.          IF packer = 3 & pause = 0 THEN DO
  321.             CALL sense
  322.             IF subpack = "SUBPACK" THEN CALL xpacker
  323.             imagefile = LEFT(unpackfile,LASTPOS('.',unpackfile)-1)
  324.             lister set fenster_s progress name 'Packe: '||imagefile||'.pkd'
  325.             ADDRESS COMMAND 'wait 1'
  326.             ADDRESS COMMAND 'PackDev '||tr||drive||tr||' '||tr||'ziel:'||imagefile||tr||' P '||subpack||zusatz||' NC NV'
  327.             IF RC >5 THEN CALL fehler
  328.          END
  329.          IF packer = 4 & pause = 0 THEN DO
  330.             CALL sense
  331.             say
  332.             say "DMS arbeitet im Hintergrund!"
  333.             say
  334.             imagefile = LEFT(unpackfile,LASTPOS('.',unpackfile)-1)
  335.             lister set fenster_s progress name 'Packe: '||imagefile||'.DMS'
  336.             ADDRESS COMMAND 'wait 1'
  337.             ADDRESS COMMAND 'DMS READ '||tr||'ziel:'||imagefile||tr||' FROM '||tr||drive||tr||zzs||' <NIL: >NIL:'
  338.             IF RC >5 THEN CALL fehler
  339.          END
  340.          IF packer = 5 & pause = 0 THEN DO
  341.             CALL sense
  342.             imagefile = LEFT(unpackfile,LASTPOS('.',unpackfile)-1)||'.zom'
  343.             lister set fenster_s progress name 'Packe: '||imagefile
  344.             ADDRESS COMMAND 'wait 1'
  345.             ADDRESS COMMAND 'zoom From '||tr||drive||tr||' To '||tr||'ziel:'||imagefile||tr||zzx||' N'
  346.             IF RC >5 THEN CALL fehler
  347.          END
  348.          IF loesch = 1 & pfad_s = pfad_d THEN DO
  349.             ADDRESS COMMAND 'DELETE '||tr||'quelle:'||unpackfile||tr||' QUIET FORCE'
  350.          END
  351.       END
  352.        IF arc = 1 & pause = 0 THEN DO
  353.           CALL sense
  354.              namef = LEFT(unpackfile,LASTPOS('.',unpackfile)-1)
  355.              IF packer = 1 THEN namez = namef||'.lzx'
  356.              IF packer = 2 THEN namez = namef||'.lha'
  357.              IF EXISTS('ziel:'||namez) = 1 THEN DO
  358.                 IF loesch = 0 THEN DO
  359.                    dopus request '"Es existiert bereits ein File mit dem gleichen Namen!!'||lf||'Das muß gelöscht werden!!" Ja|Nein'
  360.                    IF RC = 1 THEN loesch = 2
  361.                 END
  362.                 IF loesch = >0 THEN ADDRESS COMMAND 'delete >NIL: '||tr||'ziel:'||namez||tr||' QUIET FORCE'
  363.                 IF loesch = 2 THEN loesch = 0
  364.              END
  365.              CALL sense
  366.              lister set fenster_s progress name 'Packe: '||namez
  367.              IF packer = 1 | packer = 3 THEN ADDRESS COMMAND 'LZX -m -3 -bo256 -e -r -Y a '||tr||'ziel:'||namef||tr||' Packtemp:#?'
  368.              IF packer = 2 THEN ADDRESS COMMAND 'LHA -F -e -r -b256 -Z a '||tr||'ziel:'namef||tr||' Packtemp:#?'
  369.              IF RC >5 THEN CALL fehler
  370.           END
  371.           ADDRESS COMMAND 'wait 1'
  372.           ADDRESS COMMAND 'DELETE >NIL: Packtemp:#? ALL QUIET FORCE'
  373.        END
  374.    END
  375. pause = 0
  376. packtyp = ""
  377. arc = 0
  378. zzs = ""
  379. zzx = " D B"
  380. END
  381. RETURN
  382.  
  383. ENTPACKEN:
  384. anweisung = UPPER(COMPRESS(message,' "'))
  385. IF anzahl < 1 THEN DO
  386.    dopus request '"Oh Mann!: Irgendetwas solltest du schon anhaken!" OK'
  387.    CALL schluss
  388. END
  389. laufwerk = "pack"
  390. lister set fenster_s busy 1
  391. lister set fenster_d busy 1
  392. IF pfad_s = pfad_d & anweisung ~= "NOASK" THEN DO
  393.    dopus request '"Quell - und Ziellister sind gleich!!'||lf||'Die Quellfiles werden (teilweise) gelöscht!" Weiter|Abbruch'
  394.    IF RC = 0 THEN CALL schluss
  395. END
  396. abbruch = 0
  397. pause = 0
  398. x = 0
  399. zzy = ""
  400. IF anzahl >3 THEN ADDRESS COMMAND 'resident >NIL: C:xfdDcrunch pure'
  401. lister set fenster_s progress anzahl 'Entpacke File(s):'
  402. DO FOREVER
  403.    x = x+1
  404.    lister query fenster_s firstsel
  405.    IF RC ~= 0 THEN LEAVE
  406.    xfile = RESULT
  407.    unpackfile = STRIP(xfile,B,' "')
  408.    lister query fenster_s entry xfile
  409.    yfile = RESULT
  410.    lister select fenster_s xfile 0
  411.    lister set fenster_s progress count x
  412.    dopus getfiletype 'quelle:'||xfile id
  413.    packtyp = UPPER(RESULT)
  414.    IF packtyp ="DMS"|packtyp="PKD"|packtyp="XMS"|packtyp="PKX"|packtyp="PKA"|packtyp="DSQ"|packtyp="XDM"|packtyp="ZOM" THEN DO
  415.       IF frage = 1 THEN CALL diskwechsel
  416.       IF frage = 0 THEN CALL DRIVETEST
  417.       IF abbruch = 1 | frage = 2 THEN BREAK
  418.    END
  419.    IF packtyp = "ZOM" THEN DO
  420.       IF LEFT(drive,2) = "DF" THEN zzy = " V"
  421.    END
  422.    IF packtyp = "DMS" THEN DO
  423.       say
  424.       say "DMS ist am Werkeln!"
  425.       say
  426.    END
  427.    SELECT
  428.          WHEN packtyp = "LZX" THEN befehl = 'LZX -m -X0 x '||tr||'quelle:'||unpackfile||tr||' ziel:'
  429.          WHEN packtyp = "LHA" THEN befehl = 'LHA -F -m -X x '||tr||'quelle:'||unpackfile||tr||' ziel:'
  430.          WHEN packtyp = "DSQ" THEN befehl = 'PackDev Packtemp:Image.dsq '||tr||drive||tr||' ETDF NC NV'
  431.          WHEN packtyp = "DMS" THEN befehl = 'DMS WRITE '||tr||'quelle:'||unpackfile||tr||' to '||tr||drive||tr||' NOTEXT NOPAUSE <NIL: >NIL:'
  432.          WHEN packtyp = "PKD" THEN befehl = 'PackDev '||tr||'quelle:'||unpackfile||tr||' '||tr||drive||tr||' NC NV'
  433.          WHEN packtyp = "PKX" | packtyp = "PKA" THEN befehl = 'PackDev Packtemp:Image.pak TO '||tr||drive||tr||' ETDF NC NV'
  434.          WHEN packtyp = "XMS" THEN befehl = 'XMash WRITE '||tr||'quelle:'||unpackfile||tr||' TO '||tr||drive||tr
  435.          WHEN packtyp = "AMPK" THEN befehl = 'AMIPACK-X '||tr||'quelle:'||unpackfile||tr||' ziel:'
  436.          WHEN packtyp = "ZIP" THEN befehl = 'Unzip -o '||tr||'quelle:'||unpackfile||tr||' -d ziel:'
  437.          WHEN packtyp = "ZOM" THEN befehl = 'zoom  From '||tr||'quelle:'||unpackfile||tr||' To '||tr||drive||tr||zzy||' N'
  438.          WHEN packtyp = "ZOO" THEN befehl = "Gehtnicht"
  439.          OTHERWISE befehl = "NOP"
  440.    END
  441.    IF befehl = "NOP" THEN DO
  442.       IF WORD(yfile,2) = "-1" THEN DO
  443.          IF pfad_s ~= pfad_d THEN ADDRESS COMMAND 'makedir >NIL: '||tr||'ziel:'||unpackfile||tr
  444.          befehl = 'xfdDecrunch '||tr||'quelle:'||unpackfile||tr||' '||tr||'ziel:'||unpackfile||tr||' FORCE ALL NA CA'
  445.          packtyp = "DIR"
  446.       END
  447.       IF WORD(yfile,2) ~= "-1" THEN befehl = 'xfdDecrunch '||tr||'quelle:'||unpackfile||tr||' ziel: FORCE ALL NA CA'
  448.    END
  449.    IF abbruch = 1 | frage = 2 THEN LEAVE
  450.    CALL sense
  451.    lister set fenster_s progress name packtyp': '||unpackfile
  452.    IF packtyp="PKX" | packtyp = "PKA" | packtyp="DSQ" | packtyp="XDM" THEN DO
  453.       IF packtyp ~= "PKA" THEN ADDRESS COMMAND 'LZX -m -X0 x '||tr||'quelle:'||unpackfile||tr||' Packtemp:'
  454.       IF packtyp = "PKA" THEN ADDRESS COMMAND 'LHA -F -m -X x '||tr||'quelle:'||unpackfile||tr||' Packtemp:'
  455.       IF RC >5 THEN CALL FEHLER
  456.       IF abbruch ~= 0 THEN BREAK
  457.       IF EXISTS('Packtemp:xDM.image') = 1 THEN befehl = 'PackDev Packtemp:xDM.image '||tr||drive||tr||' ETDF NC NV'
  458.       IF EXISTS('Packtemp:xdm.pkd') = 1 THEN DO
  459.          dopus getfiletype 'Packtemp:xdm.pkd id'
  460.          testpack = RESULT
  461.          IF testpack ~= "PKD" THEN befehl = 'DD -c1760 -w '||tr||drive||tr||' Packtemp:xdm.pkd'
  462.       END
  463.       IF EXISTS('Packtemp:xdm.dsk') = 1 THEN DO
  464.          dopus getfiletype 'Packtemp:xdm.dsk id'
  465.          testpack = RESULT
  466.          IF testpack ~= "PKD" THEN befehl = 'DD -c1760 -w '||tr||drive||tr||' Packtemp:xdm.dsk'
  467.       END
  468.    END
  469.    CALL sense
  470.    IF pause = 0 THEN ADDRESS COMMAND befehl
  471.    IF RC >5 THEN CALL FEHLER
  472.    ADDRESS COMMAND 'DELETE >NIL: Packtemp:#? QUIET FORCE'
  473.    IF abbruch = 1 | frage = 2 THEN DO
  474.       IF anzahl >3 &  THEN ADDRESS COMMAND 'resident >NIL: xfdDcrunch remove'
  475.    END
  476.    IF abbruch = 1 | frage = 2 THEN LEAVE
  477. packtyp = ""
  478. pause = 0
  479. zzy = ""
  480. END
  481. RETURN
  482.  
  483. PACKEN:
  484. lister set fenster_s busy 1
  485. lister set fenster_d busy 1
  486. anweisung = UPPER(STRIP(message,B,' "'))
  487. IF anzahl = 0 & crunch = "" THEN packer = 4
  488. IF crunch ~= "" & crunch ~= "CRUNCH" THEN DO
  489.    crunch = UPPER(STRIP(crunch,B,' "'))
  490.    SELECT
  491.       WHEN crunch = "LZX" THEN packer = "LZX"
  492.       WHEN crunch = "LHA" THEN packer = "LHA"
  493.       WHEN crunch = "XPK" THEN packer = "XPK"
  494.       WHEN crunch = "LZXMASH" THEN packer = "LZXM"
  495.       WHEN crunch = "LHAMASH" THEN packer = "LHAM"
  496.       WHEN crunch = "XMASH" THEN packer = "XMASH"
  497.       WHEN crunch = "DMS" THEN packer = "DMS"
  498.       WHEN crunch = "DSQ" THEN packer = "DSQ"
  499.       WHEN crunch = "ZOM" THEN packer = "ZOM"
  500.       OTHERWISE NOP
  501.    END
  502.    IF packer = "LZX" | packer = "LHA" | packer = "XPK" THEN DO
  503.       IF anzahl = 0 THEN DO
  504.          dopus request '"Wenn Du nichts selektiert hast,'||lf||'kann ich nichts packen!!" OK'
  505.          CALL schluss
  506.       END
  507.    END
  508.    IF LENGTH(crunch) > 3 THEN DO
  509.       IF LEFT(crunch,5) = "XMASH" THEN DO
  510.          packer = "XMASH"
  511.          subpack = SUBSTR(crunch,7)
  512.          IF VALUE(SUBSTR(crunch,15)) = 0 THEN packer = 0
  513.       END
  514.       IF LEFT(crunch,3) = "XPK" THEN DO
  515.          packer = "XPK"
  516.          subpack = SUBSTR(crunch,5)
  517.          IF VALUE(SUBSTR(crunch,8)) = 0 THEN packer = 0
  518.       END
  519.    END
  520. END
  521. IF packer = 0 THEN DO
  522.    dopus request '"Welcher Packer darf es denn sein ?" LZX|LHA|XPK|DiskPacker|Abbruch'
  523.    packer = RC
  524. SELECT
  525.    WHEN packer = 0 THEN CALL schluss
  526.    WHEN packer = 1 THEN packer = "LZX"
  527.    WHEN packer = 2 THEN packer = "LHA"
  528.    WHEN packer = 3 THEN packer = "XPK"
  529.    OTHERWISE packer = 4
  530. END
  531. END
  532. IF packer = 4 THEN DO
  533.    dopus request '"Disk-Packen ist angesagt !! *** Da hätten wir zum Beispiel:" LZXMash|LHAMash|XPKMash|DSQMash|DMS|Zoom|Ende'
  534.    mash = RC
  535.    SELECT
  536.       WHEN mash = 0 THEN CALL schluss
  537.       WHEN mash = 1 THEN packer = "LZXM"
  538.       WHEN mash = 2 THEN packer = "LHAM"
  539.       WHEN mash = 3 THEN packer = "XMASH"
  540.       WHEN mash = 4 THEN packer = "DSQ"
  541.       WHEN mash = 5 THEN packer = "DMS"
  542.       WHEN mash = 6 THEN packer = "ZOM"
  543.       OTHERWISE NOP
  544.    END
  545. END
  546. IF packer = "LHA" | packer = "LZX" THEN DO
  547.    xname = "";i = 0;a = 0;n = 0
  548.    dopus getstring '"Bitte den Namen des Archivs eingeben!" 40 "" OK|Abbruch'
  549.    namef = RESULT
  550.    IF namef = "RESULT" | dopusrc = 0 THEN CALL schluss
  551.    IF anzahl >30 THEN DO
  552.       IF packer = "LZX" THEN ADDRESS COMMAND 'resident >NIL: c:LZX pure'
  553.       IF packer = "LHA" THEN ADDRESS COMMAND 'resident >NIL: c:LHA pure'
  554.    END
  555.    lister set fenster_s progress anzahl 'Kaffeepause!! Ich archiviere:'
  556.    DO FOREVER
  557.       CALL sense
  558.       i = i +1
  559.       lister query fenster_s firstsel
  560.       n = RC
  561.       IF n = 0 THEN DO
  562.          xfile = RESULT
  563.          packfile = tr||"quelle:"||STRIP(xfile,B,' "')||tr||' '
  564.          lister select fenster_s xfile 0
  565.          a = a+1
  566.          lister set fenster_s progress name Packe bis':' STRIP(xfile,B,' "')
  567.          lister set fenster_s progress count a
  568.          xname = xname||packfile
  569.       END
  570.       IF i = 15 | n ~= 0 & xname ~= "" THEN DO
  571.          IF packer = "LHA" THEN ADDRESS COMMAND 'LHA -F -m -b256 -e -r -Z a ziel:'||namef xname
  572.          IF packer = "LZX" THEN ADDRESS COMMAND 'LZX -m -3 -bo256 -e -r -Y a ziel:'||namef xname
  573.          i = 0;xname = ""
  574.       END
  575.       IF n ~= 0 THEN DO
  576.          IF anzahl >30 THEN DO
  577.             IF packer = "LZX" THEN ADDRESS COMMAND 'resident >NIL: LZX remove'
  578.             IF packer = "LHA" THEN ADDRESS COMMAND 'resident >NIL: LHA remove'
  579.          END
  580.       IF n ~= 0 THEN LEAVE
  581.       END
  582.    END
  583. END
  584. IF packer = "XPK" THEN DO
  585.    IF subpack = "SUBPACK" THEN CALL xpacker
  586.    exec = ""
  587.    IF anzahl >1 THEN dopus request '"Sollen alle Files gepackt werden, oder nur Datenfiles?'||lf||'*** Achtung!! Verzeichnisse werden nicht beabeitet!! ***" Alles|All.o.info|Daten|Dat.o.info|Abbruch'
  588.    z = RC
  589.    IF z = 0 THEN CALL schluss
  590.    IF z = 1 | z = 2 THEN exec = " EXECUTABLE"
  591.    IF pfad_s = pfad_d & UPPER(STRIP(message,B,' "')) ~= "NOASK" THEN DO
  592.       dopus request '"Quell- und Zielpfad sind identisch!!'||lf||'Die Quelldateien werden gelöscht!!" OK|Abbruch'
  593.       IF RC = 0 THEN CALL schluss
  594.    END
  595.    IF anzahl >3 THEN ADDRESS COMMAND 'resident >NIL: C:XpackIt pure'
  596.    lister set fenster_s progress anzahl 'Kaffeepause!! Ich packe File(s):'
  597.    i = 0
  598.    pause = 0
  599.    DO FOREVER
  600.       CALL sense
  601.       i = i +1
  602.       lister query fenster_s firstsel
  603.       n = RC
  604.       IF n = 0 THEN DO
  605.          xfile = RESULT
  606.          packfile = tr||"quelle:"||STRIP(xfile,B,' "')||tr
  607.          lister query fenster_s entry xfile
  608.          yfile = RESULT
  609.          dirtest = WORD(yfile,2)
  610.          IF dirtest = "-1" THEN DO
  611.             say
  612.             say packfile||" Ist eine Verzeichnis"
  613.             say "Das wird nicht bearbeitet"
  614.             say
  615.             pause = 1
  616.          END
  617.          lister select fenster_s xfile 0
  618.          dopus getfiletype 'quelle:'||xfile id
  619.          packtyp = UPPER(RESULT)
  620.          IF packtyp = "ICON" THEN DO
  621.             IF z = 2 | z = 4 THEN pause = 2
  622.          END
  623.          lister set fenster_s progress count i
  624.          IF pause = 0 | pause = 2 THEN DO
  625.             lister set fenster_s progress name XPK': '||STRIP(xfile,B,' "')
  626.             IF pause = 0 THEN ADDRESS COMMAND 'XPackIt '||packfile||' ziel: METHOD '||subpack||exec||' PACK'
  627.             IF EXISTS('ziel:'||STRIP(xfile,B,' "')) = 0 THEN DO
  628.             lister set fenster_s progress name 'Kopiere: '||STRIP(xfile,B,' "')
  629.                say
  630.                say "Das File "||xfile||" wird kopiert!!"
  631.                say
  632.                ADDRESS COMMAND 'Copy '||packfile||' to '||tr||'ziel:'||STRIP(xfile,B,' "')||tr||' QUIET CLONE NOREQ'
  633.             END
  634.          END
  635.       END
  636.       pause = 0
  637.       IF n ~= 0 & anzahl >3 THEN ADDRESS COMMAND 'resident >NIL: XpackIt remove'
  638.       IF n ~= 0 THEN LEAVE
  639.    END
  640. END
  641. IF packer="DMS"|packer="LHAM"|packer="LZXM"|packer="XMASH"|packer="DSQ"|packer="ZOM" THEN DO
  642.    IF anweisung ~= "NOASK" THEN DO
  643.       dopus request '"Achtung!!'||lf||'Die Disk wird in das angewählte Verzeichnis gepackt!!" Ok|Ende'
  644.       IF RC = 0 THEN CALL schluss
  645.    END
  646.    CALL DRIVETEST
  647.    IF abbruch = 1 THEN CALL schluss
  648.    dopus request '"Sollen mehrere Disketten gepackt werden ?" Nein|Ja|Abbruch'
  649.    diskzahl = RC
  650.    IF diskzahl = 0 THEN CALL schluss
  651.    xyz = 0
  652.    IF diskzahl = 2 THEN lister set fenster_s progress 25 'Archiviere Diskette(n):'
  653.    IF diskzahl = 1 THEN lister set fenster_s progress 1 'Archiviere Diskette(n):'
  654.    a=0
  655.    zzy = " D B"
  656.    DO FOREVER
  657.       a = a+1
  658.       IF a >25 THEN DO
  659.          lister clear fenster_s progress
  660.          lister clear fenster_s abbort
  661.          lister set fenster_s progress 25 'Archiviere Diskette(n):'
  662.       END
  663.       pause = 0
  664.       dopus getstring '"Bitte den Archivnamen eingeben!'||lf||'Achtung!! Die Diskette wird in das Verzeichnis:'||lf||pfad_s||' gepackt!!" 40 "" OK|Abbruch'
  665.       archiv = RESULT
  666.       IF archiv = "RESULT" | dopusrc = 0 THEN CALL schluss
  667.       IF xyz = 1 THEN CALL diskwechsel
  668.       IF frage = 2 THEN LEAVE
  669.       lister set fenster_s progress name 'Teste Quelldisk'
  670.       xyz = 1
  671.       zusatz = ""
  672.       ADDRESS COMMAND 'TestDevice '||tr||drive||tr
  673.       xt = RC
  674.       IF xt = 0 THEN DO
  675.          ADDRESS COMMAND 'DirII >Ram:Testfile '||tr||drive||tr||' ALL NOINFO LFORMAT %l'
  676.          OPEN('test','Ram:Testfile','READ')
  677.          tx = READLN('test')
  678.          CLOSE('test')
  679.          ADDRESS COMMAND 'delete >NIL: Ram:Testfile QUIET FORCE'
  680.          IF VALUE('tx') <1 THEN xt = 1
  681.       END
  682.       CALL sense
  683.       lister set fenster_s progress count a
  684.       IF packer = "DMS" THEN DO
  685.          IF xt >0 THEN zusatz = " NOZERO"
  686.          lister set fenster_s progress name DMS': '||drive # archiv||.DMS
  687.          CALL sense
  688.          say
  689.          say "DMS ist bei der Arbeit!"
  690.          say
  691.          ADDRESS COMMAND 'DMS READ '||tr||'quelle:'||archiv||tr||' FROM '||tr||drive||tr||zusatz||' <NIL: >NIL:'
  692.       END
  693.       IF packer = "ZOM" THEN DO
  694.          IF xt >0 THEN zzy = ""
  695.          lister set fenster_s progress name Zoom': '||drive # archiv||.zom
  696.          CALL sense
  697.          ADDRESS COMMAND 'zoom from '||tr||drive||tr||' To '||tr||'quelle:'||archiv||'.zom'||tr||zzy||' N'
  698.       END
  699.       IF packer = "XMASH" THEN DO
  700.          IF subpack = "SUBPACK" THEN CALL xpacker
  701.          IF xt >0 THEN zusatz = " ALL"
  702.          lister set fenster_s progress name XPK': '||drive # archiv||.DMS
  703.          CALL sense
  704.          ADDRESS COMMAND 'wait 1'
  705.          ADDRESS COMMAND 'PackDev '||tr||drive||tr||' '||tr||'quelle:'||archiv||tr||' P '||subpack||zusatz||' NC NV'
  706.       END
  707.       IF packer = "LHAM" | packer = "LZXM" | packer = "DSQ" THEN DO
  708.          IF xt = 0 THEN DO
  709.             IF packer ~= "DSQ" THEN ADDRESS COMMAND 'DirII >Packtemp:Files.pak all sizes width=64 '||tr||drive||tr
  710.             IF packer = "DSQ" THEN ADDRESS COMMAND 'DirII >Packtemp:Files.dsq all sizes width=64 '||tr||drive||tr
  711.          END
  712.          IF xt ~= 0 THEN DO
  713.             zusatz = " ALL"
  714.             IF packer ~= "DSQ" THEN ADDRESS COMMAND 'echo >Packtemp:Files.pak "Disk leer oder keine gültige DOS-Disk!!"'
  715.             IF packer = "DSQ" THEN ADDRESS COMMAND 'echo >Packtemp:Files.dsq "Disk leer oder keine gültige DOS-Disk!!"'
  716.          END
  717.          lister set fenster_s progress name packdev': '||drive # Temp
  718.          CALL sense
  719.          ADDRESS COMMAND 'wait 1'
  720.          ADDRESS COMMAND 'PackDev '||tr||drive||tr||' Packtemp:Image.pak'||zusatz||' NC NV'
  721.          IF EXISTS('Packtemp:Image.pak.PKD') = 0 THEN DO
  722.             dopus request '"Achtung!! Fehler beim (Ent)Packen!!!" Nächstes|Abbruch'
  723.             IF RC = 0 THEN CALL schluss
  724.             pause = 1
  725.             BREAK
  726.          END
  727.          IF pause = 0 THEN DO
  728.             IF packer ~= "DSQ" THEN ADDRESS COMMAND 'Rename >NIL: Packtemp:Image.pak.PKD to Packtemp:Image.pak'
  729.             IF packer = "DSQ" THEN ADDRESS COMMAND 'Rename >NIL: Packtemp:Image.pak.PKD to Packtemp:Image.dsq'
  730.             IF packer = "LZXM" THEN imagefile = archiv||".pkx"
  731.             IF packer = "LHAM" THEN imagefile = archiv||".pka"
  732.             IF packer = "DSQ" THEN imagefile = archiv||".dsq"
  733.             CALL sense
  734.             IF packer = "LZXM" | packer = "DSQ" THEN DO
  735.                lister set fenster_s progress name LZX': '||Temp # imagefile
  736.                ADDRESS COMMAND 'LZX -m -3 -X0 -U0 -Y a '||tr||'quelle:'||imagefile||tr||' Packtemp:#?'
  737.             END
  738.             IF packer = "LHAM" THEN DO
  739.                lister set fenster_s progress name LHA':' Temp # imagefile
  740.                ADDRESS COMMAND 'LHA -F -m -X -Z a '||tr||'quelle:'||imagefile||tr||' Packtemp:#?'
  741.             END
  742.             ADDRESS COMMAND 'DELETE >NIL: Packtemp:#? QUIET FORCE'
  743.          END
  744.       END
  745.       IF diskzahl = 1 THEN LEAVE
  746.       zzy = " D B"
  747.    END
  748. END
  749. RETURN
  750.  
  751. DRIVETEST:
  752. IF packtyp ~= "XMS" THEN DO
  753.    IF auftrag ~= "CONVERT" THEN dopus request '"Welches Laufwerk soll verwendet werden ?" DF0:|DF1:|RAD:|HF0:|Anderes'
  754.    IF auftrag = "CONVERT" THEN dopus request '"Welches Laufwerk soll zur '||lf||'Konvertierung verwendet werden ?" DF0:|DF1:|RAD:|HF0:|Anderes'
  755.    x = RC
  756.    SELECT
  757.          WHEN x = 1 THEN drive = "DF0:"
  758.          WHEN x = 2 THEN drive = "DF1:"
  759.          WHEN X = 3 THEN drive = "RAD:"
  760.          WHEN X = 4 THEN drive = "HF0:"
  761.          OTHERWISE drive = "XXX"
  762.    END
  763.    IF drive = "XXX" THEN DO
  764.       dopus getstring '"Was darf es denn sein?" 15 "DF2:" OK|Abbruch'
  765.       IF DOPUSRC = 0 THEN abbruch = 1
  766.       drive = RESULT
  767.       IF abbruch = 1 | drive = "RESULT" THEN CALL schluss
  768.    END
  769. END
  770. IF packtyp = "XMS" THEN DO
  771.    dopus request '"ACHTUNG !! XMash kann nur Diskettenlaufwerke unterstützen'||lf||'Welches Laufwerk soll verwendet werden ?" DF0:|DF1:|DF2:|DF3:|Abbruch'
  772.    x = RC
  773.    SELECT
  774.          WHEN x = 0 THEN abbruch = 1
  775.          WHEN x = 1 THEN drive = "DF0:"
  776.          WHEN x = 2 THEN drive = "DF1:"
  777.          WHEN X = 3 THEN drive = "DF2:"
  778.          WHEN X = 4 THEN drive = "DF3:"
  779.          OTHERWISE NOP
  780.    END
  781. END
  782. IF abbruch = 0 THEN DO
  783.    ADDRESS COMMAND 'Assign >NIL: '||tr||drive||tr||' exists'
  784.    IF RC ~= 0 THEN DO
  785.       ADDRESS COMMAND 'mount >NIL: '||tr||drive||tr
  786.       IF RC ~= 0 THEN DO
  787.          dopus request '"Mann eh, das Laufwerk kriege ich nicht gebacken!" OK'
  788.          abbruch = 1
  789.       END
  790.    END
  791.    frage = 1
  792.    IF abbruch ~=1 & LEFT(drive,2) = "DF" THEN DO
  793.       IF laufwerk ~="" THEN laufwerk = " ungeschüzte "
  794.       dopus request '"Ist eine'||laufwerk||'Diskette'||lf||'Im Laufwerk '||drive||' eingelegt?" OK|Ende'
  795.       IF RC = 0 THEN CALL schluss
  796.    END
  797. END
  798. RETURN
  799.  
  800.  
  801. diskwechsel:
  802. frage = 1
  803. dopus request '"Hast du die Diskette gewechselt?" Ja|Anderes Laufwerk|Abbruch'
  804. lwf = RC
  805. IF lwf = 0 THEN frage = 2
  806. IF lwf = 2 THEN CALL DRIVETEST
  807. RETURN
  808.  
  809. FEHLER:
  810. dopus request '"Da ist was schief gelaufen!!" Abbruch|Nächstes'
  811. abbruch = RC
  812. IF abbruch = 0 THEN pause = 1
  813. IF abbruch = 1 THEN CALL schluss
  814. RETURN
  815.  
  816. BREAK_C:
  817. CALL SCHLUSS
  818. RETURN
  819.  
  820. XPACKER:
  821. dopus request '"Welcher XPK-Packer darf es denn sein ?" RAKE|SQSH|SHRI|NUKE|IMPL|Andere|Abbruch'
  822. x = RC
  823. IF x ~= 6 THEN xpk = x
  824. IF x = 6 THEN DO
  825.    xpk = 5
  826.    dopus request '"Dann hätten wir da noch :" BLZW|CBR0|DHUF|FAST|GZIP|Andere|Abbruch'
  827.    x = RC
  828.    IF x = 0 THEN xpk = 0
  829.    IF x ~= 6 THEN xpk = xpk + x
  830. END
  831. IF x = 6 THEN DO
  832.    xpk = 10
  833.    dopus request '"Ach ja, da sind ja auch noch :" HFMN|HUFF|LHLB|MASH|NONE|Andere|Abbruch'
  834.    x = RC
  835.    IF x = 0 THEN xpk = 0
  836.    IF x ~= 6 THEN xpk = xpk + x
  837. END
  838. IF x = 6 THEN DO
  839.    xpk = 15
  840.    dopus request '"Wehe, es schreibt einer nochn Packer! Also:" RCDN|RLEN|SMPL|Abbruch'
  841.    x = RC
  842.    IF x = 0 THEN xpk = 0
  843.    IF x ~= 6 THEN xpk = xpk + x
  844. END
  845. SELECT
  846.    WHEN xpk = 0 THEN CALL schluss
  847.    WHEN xpk = 1 THEN xpk = "RAKE"
  848.    WHEN xpk = 2 THEN xpk = "SQSH"
  849.    WHEN xpk = 3 THEN xpk = "SHRI"
  850.    WHEN xpk = 4 THEN xpk = "NUKE"
  851.    WHEN xpk = 5 THEN xpk = "IMPL"
  852.    WHEN xpk = 6 THEN xpk = "BLZW"
  853.    WHEN xpk = 7 THEN xpk = "CBR0"
  854.    WHEN xpk = 8 THEN xpk = "DHUF"
  855.    WHEN xpk = 9 THEN xpk = "FAST"
  856.    WHEN xpk = 10 THEN xpk = "GZIP"
  857.    WHEN xpk = 11 THEN xpk = "HFMN"
  858.    WHEN xpk = 12 THEN xpk = "HUFF"
  859.    WHEN xpk = 13 THEN xpk = "LHLB"
  860.    WHEN xpk = 14 THEN xpk = "MASH"
  861.    WHEN xpk = 15 THEN xpk = "NONE"
  862.    WHEN xpk = 16 THEN xpk = "RCDN"
  863.    WHEN xpk = 17 THEN xpk = "RLEN"
  864.    WHEN xpk = 18 THEN xpk = "SMPL"
  865.    OTHERWISE NOP
  866. END
  867. IF packer = "XPK" | packer = "XMASH" | packer = 3 THEN DO
  868.    dopus request '"Tja dann haben wir noch die Packrate'||lf||'Bitte wählen Sie:" 50%|75%|100%|Andere|Ende'
  869.    rate = RC
  870.    SELECT
  871.       WHEN rate = 0 THEN CALL schluss
  872.       WHEN rate = 1 THEN subpack = xpk||".50"
  873.       WHEN rate = 2 THEN subpack = xpk||".75"
  874.       WHEN rate = 3 THEN subpack = xpk||".100"
  875.       OTHERWISE NOP
  876.    END
  877.    IF rate = 4 THEN DO
  878.       dopus getstring '"Bitte die Packrate eingeben:" 3 "" OK|Abbruch'
  879.       rate = RESULT
  880.       IF rate = "RESULT" | dopusrc = 0 THEN CALL schluss
  881.       subpack = xpk||"."||rate
  882.    END
  883. END
  884. RETURN
  885.  
  886. SENSE:
  887. lister query fenster_s abort
  888. sx = RESULT
  889. IF sx ~=0 THEN DO
  890.    dopus request '"Wirklich abbrechen ?" Ja|Nein'
  891.    IF RC = 1 THEN CALL schluss
  892.    lister clear fenster_s abort
  893. END
  894. RETURN
  895.  
  896. SYNTAX:
  897. PULL
  898. CALL schluss
  899. RETURN
  900.  
  901.